package com.javasoft.util.LCB;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class PasswordEncoderUtil {
/// 声明：
/// 这是一个基于SHA-256的简答加密算法
/// （它简单不代表它很脆弱）
/// SHA-256是一种不可逆的哈希函数，适合用于密码加密
/// 那么一来，就无法在用户表中查看用户的明文密码
/// 嗯，还是挺符合常理的，你要是问我忘记密码了怎么办？
/// 用户留有的邮箱用来重置密码就好了o(*￣▽￣*)ブ
    public static String encode(String password) {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            byte[] hashBytes = md.digest(password.getBytes());
            StringBuilder sb = new StringBuilder();
            for (byte b : hashBytes) {
                sb.append(String.format("%02x", b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("Error encoding password", e);
        }
    }

    public static void main(String[] args) {
        String password = "mySecurePassword";
        String encodedPassword = encode(password);
        System.out.println("Encoded Password: " + encodedPassword);
    }

    public static boolean matches(String rawPassword, String encodedPassword) {
        return PasswordEncoderUtil.encode(rawPassword).equals(encodedPassword);
    }
}
